home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / perl / 5.10.0 / CORE / dosish.h < prev    next >
Encoding:
C/C++ Source or Header  |  2009-06-26  |  5.7 KB  |  200 lines

  1. /*    dosish.h
  2.  *
  3.  *    Copyright (C) 1993, 1994, 1996, 1997, 1998, 1999,
  4.  *    2000, 2001, 2002, 2007, by Larry Wall and others
  5.  *
  6.  *    You may distribute under the terms of either the GNU General Public
  7.  *    License or the Artistic License, as specified in the README file.
  8.  *
  9.  */
  10. #define ABORT() abort();
  11.  
  12. #ifndef SH_PATH
  13. #define SH_PATH "/bin/sh"
  14. #endif
  15.  
  16. #ifdef DJGPP
  17. #  define BIT_BUCKET "nul"
  18. #  define OP_BINARY O_BINARY
  19. #  define PERL_SYS_INIT_BODY(c,v)                    \
  20.      MALLOC_CHECK_TAINT2(*c,*v) Perl_DJGPP_init(c,v); PERLIO_INIT
  21. #  define init_os_extras Perl_init_os_extras
  22. #  define HAS_UTIME
  23. #  define HAS_KILL
  24.    char *djgpp_pathexp (const char*);
  25.    void Perl_DJGPP_init (int *argcp,char ***argvp);
  26. #  if (DJGPP==2 && DJGPP_MINOR < 2)
  27. #    define NO_LOCALECONV_MON_THOUSANDS_SEP
  28. #  endif
  29. #  define PERL_FS_VER_FMT    "%d_%d_%d"
  30. #else    /* DJGPP */
  31. #  ifdef WIN32
  32. #    define PERL_SYS_INIT_BODY(c,v)                    \
  33.     MALLOC_CHECK_TAINT2(*c,*v) Perl_win32_init(c,v); PERLIO_INIT
  34. #    define PERL_SYS_TERM_BODY()   Perl_win32_term()
  35. #    define BIT_BUCKET "nul"
  36. #  else
  37. #     ifdef NETWARE
  38. #      define PERL_SYS_INIT_BODY(c,v)                    \
  39.     MALLOC_CHECK_TAINT2(*c,*v) Perl_nw5_init(c,v); PERLIO_INIT
  40. #      define BIT_BUCKET "nwnul"
  41. #    else
  42. #      define PERL_SYS_INIT_BODY(c,v)        \
  43.     MALLOC_CHECK_TAINT2(*c,*v); PERLIO_INIT
  44. #      define BIT_BUCKET "\\dev\\nul" /* "wanna be like, umm, Newlined, or somethin?" */
  45. #    endif /* NETWARE */
  46. #  endif
  47. #endif    /* DJGPP */
  48.  
  49. #ifndef PERL_SYS_TERM_BODY
  50. #  define PERL_SYS_TERM_BODY() HINTS_REFCNT_TERM; OP_REFCNT_TERM; PERLIO_TERM; MALLOC_TERM
  51. #endif
  52. #define dXSUB_SYS
  53.  
  54. /*
  55.  * 5.003_07 and earlier keyed on #ifdef MSDOS for determining if we were 
  56.  * running on DOS, *and* if we had to cope with 16 bit memory addressing 
  57.  * constraints, *and* we need to have memory allocated as unsigned long.
  58.  *
  59.  * with the advent of *real* compilers for DOS, they are not locked together.
  60.  * MSDOS means "I am running on MSDOS". HAS_64K_LIMIT means "I have 
  61.  * 16 bit memory addressing constraints".
  62.  *
  63.  * if you need the last, try #DEFINE MEM_SIZE unsigned long.
  64.  */
  65. #ifdef MSDOS
  66. #  ifndef DJGPP
  67. #    define HAS_64K_LIMIT
  68. #  endif
  69. #endif
  70.  
  71. /* USEMYBINMODE
  72.  *    This symbol, if defined, indicates that the program should
  73.  *    use the routine my_binmode(FILE *fp, char iotype, int mode) to insure
  74.  *    that a file is in "binary" mode -- that is, that no translation
  75.  *    of bytes occurs on read or write operations.
  76.  */
  77. #undef USEMYBINMODE
  78.  
  79. /* Stat_t:
  80.  *    This symbol holds the type used to declare buffers for information
  81.  *    returned by stat().  It's usually just struct stat.  It may be necessary
  82.  *    to include <sys/stat.h> and <sys/types.h> to get any typedef'ed
  83.  *    information.
  84.  */
  85. #if defined(WIN64) || defined(USE_LARGE_FILES)
  86. # if defined(__BORLANDC__) /* buk */
  87. #  include <sys\stat.h>
  88. #  define Stat_t struct stati64
  89. # else
  90. #define Stat_t struct _stati64
  91. # endif
  92. #else
  93. #if defined(UNDER_CE)
  94. #define Stat_t struct xcestat
  95. #else
  96. #define Stat_t struct stat
  97. #endif
  98. #endif
  99.  
  100. /* USE_STAT_RDEV:
  101.  *    This symbol is defined if this system has a stat structure declaring
  102.  *    st_rdev
  103.  */
  104. #define USE_STAT_RDEV     /**/
  105.  
  106. /* ACME_MESS:
  107.  *    This symbol, if defined, indicates that error messages should be 
  108.  *    should be generated in a format that allows the use of the Acme
  109.  *    GUI/editor's autofind feature.
  110.  */
  111. #undef ACME_MESS    /**/
  112.  
  113. /* ALTERNATE_SHEBANG:
  114.  *    This symbol, if defined, contains a "magic" string which may be used
  115.  *    as the first line of a Perl program designed to be executed directly
  116.  *    by name, instead of the standard Unix #!.  If ALTERNATE_SHEBANG
  117.  *    begins with a character other then #, then Perl will only treat
  118.  *    it as a command line if it finds the string "perl" in the first
  119.  *    word; otherwise it's treated as the first line of code in the script.
  120.  *    (IOW, Perl won't hand off to another interpreter via an alternate
  121.  *    shebang sequence that might be legal Perl code.)
  122.  */
  123. /* #define ALTERNATE_SHEBANG "#!" / **/
  124.  
  125. #include <signal.h>
  126.  
  127. /*
  128.  * fwrite1() should be a routine with the same calling sequence as fwrite(),
  129.  * but which outputs all of the bytes requested as a single stream (unlike
  130.  * fwrite() itself, which on some systems outputs several distinct records
  131.  * if the number_of_items parameter is >1).
  132.  */
  133. #define fwrite1 fwrite
  134.  
  135. #define Fstat(fd,bufptr)   fstat((fd),(bufptr))
  136. #ifdef DJGPP
  137. #   define Fflush(fp)      djgpp_fflush(fp)
  138. #else
  139. #   define Fflush(fp)      fflush(fp)
  140. #endif
  141. #define Mkdir(path,mode)   mkdir((path),(mode))
  142.  
  143. #ifndef WIN32
  144. #  define Stat(fname,bufptr) stat((fname),(bufptr))
  145. #else
  146. #  define HAS_IOCTL
  147. #  define HAS_UTIME
  148. #  define HAS_KILL
  149. #  define HAS_WAIT
  150. #  define HAS_CHOWN
  151. #endif    /* WIN32 */
  152.  
  153. /*
  154.  * <rich@phekda.freeserve.co.uk>: The DJGPP port has code that converts
  155.  * the return code of system() into the form that Unixy wait usually
  156.  * returns:
  157.  *
  158.  * - signal number in bits 0-6;
  159.  * - core dump flag in bit 7;
  160.  * - exit code in bits 8-15.
  161.  *
  162.  * Bits 0-7 are always zero for DJGPP, because it uses system().
  163.  * See djgpp.c.
  164.  *
  165.  * POSIX::W* use the W* macros from <sys/wait.h> to decode
  166.  * the return code. Unfortunately the W* macros for DJGPP use
  167.  * a different format than Unixy wait does. So there's a mismatch
  168.  * and, say, WEXITSTATUS($?) will return bogus values.
  169.  *
  170.  * So here we add hack to redefine the W* macros from DJGPP's <sys/wait.h>
  171.  * to work with our return-code conversion.
  172.  */
  173.  
  174. #ifdef DJGPP
  175.  
  176. #include <sys/wait.h>
  177.  
  178. #undef WEXITSTATUS
  179. #undef WIFEXITED
  180. #undef WIFSIGNALED
  181. #undef WIFSTOPPED
  182. #undef WNOHANG
  183. #undef WSTOPSIG
  184. #undef WTERMSIG
  185. #undef WUNTRACED
  186.  
  187. #define WEXITSTATUS(stat_val) ((stat_val) >> 8)
  188. #define WIFEXITED(stat_val)   0
  189. #define WIFSIGNALED(stat_val) 0
  190. #define WIFSTOPPED(stat_val)  0
  191. #define WNOHANG               0
  192. #define WSTOPSIG(stat_val)    0
  193. #define WTERMSIG(stat_val)    0
  194. #define WUNTRACED             0
  195.  
  196. #endif
  197.  
  198. /* Don't go reading from /dev/urandom */
  199. #define PERL_NO_DEV_RANDOM
  200.